import Stack from "./01_创建栈结构(数组)";

// function isValid(s: string): boolean {
//   const stack = new Stack<string>();
//   // const sSplit = s.split(""); // 将字符串拆分成数组
//   for (let i = 0; i < s.length; i++) {
//     const c = s[i];
//     switch (c) {
//       case "(":
//         stack.push(")");
//         break;
//       case "[":
//         stack.push("]");
//         break;
//       case "{":
//         stack.push("}");
//         break;
//       default:
//         if (c !== stack.pop()) {
//           return false;
//         }
//         break;
//     }
//   }

//   return stack.isEmpty();
// }

function isValid(s: string): boolean {
  const stack: string[] = [];
  const map = new Map<string, string>([
    ["(", ")"],
    ["[", "]"],
    ["{", "}"],
  ]);
  // map.set("(", ")"); // [键, 值]
  // map.set("[", "]");
  // map.set("{", "}");
  for (let i = 0; i < s.length; i++) {
    const c = s[i];
    if (map.has(c)) {
      stack.push(map.get(c)!); // 使用非空断言运算符 (!) 确保不会是 undefined
    } else {
      if (c !== stack.pop()) {
        return false;
      }
    }
  }

  return stack.length === 0;
}

console.log(isValid("()")); // true
console.log(isValid("([)]")); // true
